16141
858
Van egy adatkészletem az alábbiak szerint
név col1 col2
a 10,3 10,9
b 11 15
c 20 7.2
d 6.2 6.2
e 5,3 5,4
f 4,5 4,0
összehasonlítani akarom a df col1 és col2 értékét, és szeretnék egy másik oszlopot készíteni, amelyben a col1 és col2 értékek összehasonlításakor, ha a col2 értéke növekszik a col1 értékéről, akkor melléjük növekvést szeretnék beírni az ott lévő oszlopomba, és csökkenő, akkor csökkenő szöveget akarok írni, és nincs változás, ha azonosak
és én ilyen kimenetet akarok
név col1 col2 col3
a 10,3 10,9 növekszik
b 11 15 növekszik
c 20 7,2 csökken
d 6,2 6,2 nincs változás
e 5,3 5,4 növekszik
f 4,5 4,0 csökken 
Dplyr-val:
df%>%
mutáció (Col3 = ifelse (col2 == col1,
"nincs változás",
ifelse (col2> col1,
"növekvő", "csökkenő")))
Vagy a case_when használatával a @akrun javaslata szerint:
df%>%
mutáció (Col3 = eset_mikor
col2> col1 ~ "növekszik",
IGAZ ~ "csökken"))
Eredmény:
név col1 col2 Col3
1 a 10,3 10,9 növekszik
2 b 11,0 15,0 növekszik
3 c 20,0 7,2 csökken
4 d 6,2 6,2 nincs változás
5 e 5,3 5,4 növekszik
6 f 4,5 4,0 csökken
Adat:
df <-structure (list (név = c ("a", "b", "c", "d", "e", "f"), col1 = c (10.3,
11., 20., 6.2., 5.3., 4.5., Col2 = c (10.9, 15, 7.2, 6.2, 5.4, 4)
-6L))
|
Kivonhatjuk a col1-et col2-ből, majd a sign használatával hozzárendelhetjük az értékeket
df $ col3 <- c ("csökken", "nincs változás", "növekszik") [jel (df $ col1 - df $ col2) + 2]
df
# név col1 col2 col3
# 1 a 10,3 10,9 csökken
# 2 b 11,0 15,0 csökken
# 3 c 20,0 7,2 növekszik
# 4 d 6,2 6,2 nincs változás
# 5 e 5,3 5,4 csökken
# 6 f 4,5 4,0 növekszik
Vagy a dplyr használatával a case_when-t is használhatjuk
könyvtár (dplyr)
df%>%
mutáció (col3 = eset_mikor (col1 == col2 ~ "nincs változás",
col1> col2 ~ "növekszik",
IGAZ ~ "csökken"))
|
R alap
df $ col3 <-with (df, ifelse (col1> col2, "csökkenő",
ifelse (col1